#ifndef UI_INFOWIDGET_HPP
#define UI_INFOWIDGET_HPP

#include <QWidget>

class QKeyEvent;
class QTableWidget;
class QString;

namespace cl {
    class Platform;
    class Device;
}

namespace ui {

    /** @brief The OpenCL InfoWidget class. */
    class InfoWidget : public QWidget {

        Q_OBJECT

    public:

        /** @brief InfoWidget Shows information of an OpenCL platform & device.
         * @param platform the selected OpenCL platform.
         * @param device the selected OpenCL device.
         * @param parent the parent widget. */
        InfoWidget(const cl::Platform &platform, const cl::Device &device,
                   QWidget *parent = 0);
        ~InfoWidget(void);

    protected:
        void keyPressEvent(QKeyEvent *event);

    private slots:
        void onItemSelectionChanged(void);

    private:
        QTableWidget *tableWidget;
        QString      *clipboardData;
    };
}

#endif // UI_INFOWIDGET_HPP
